import os
import shutil
import numpy as np


def move_random_files(source_folder, destination_folder, percentage=0.2):
    # 获取源文件夹中的所有文件
    all_files = [
        f
        for f in os.listdir(source_folder)
        if os.path.isfile(os.path.join(source_folder, f))
    ]

    # 输出移动前原文件夹的总文件数
    total_files = len(all_files)
    print(f"原文件夹中的文件总数: {total_files}")

    # 计算需要移动的文件数量
    num_files_to_move = int(total_files * percentage)

    # 随机选择需要移动的文件
    files_to_move = np.random.choice(all_files, num_files_to_move, replace=False)

    # 确保目标文件夹存在
    os.makedirs(destination_folder, exist_ok=True)

    # 移动文件
    for file in files_to_move:
        shutil.move(
            os.path.join(source_folder, file), os.path.join(destination_folder, file)
        )

    print(f"已移动 {num_files_to_move} 个文件到目标文件夹")


# 示例使用
source_folder = "/home/hw/homework/homework_plus/yellow"  # 替换为源文件夹路径
destination_folder = "/home/hw/homework/homework_plus_test/yellow"  # 替换为目标文件夹路径

move_random_files(source_folder, destination_folder)
